.\" -*- nroff -*-
.TH intro 9 "July 1997" "Linux DDI" "Linux DDI"

.\" Copyright 1997 Stephen Williams

.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.

.SH NAME
intro \- Introduction to kernel interface
.SH SYNOPSIS
.B #include <linux/version.h>
.SH DESCRIPTION
This section documents the functions available to device driver
writers and kernel level modules. The functions are of interest mainly
to device driver writers, although anyone considering running code in
linux kernel mode may need to be familiar with these interfaces.
.PP
Some of the functions of the DDI exist only in certain versions of the
kernel. Use the
.B LINUX_VERSION_CODE
macro to test for specific versions of the kernel. For example, to use
a feature that is new to 2.1, say:
.PP
.nf
#if LINUX_VERSION_CODE >= 0x020100
    ... use new stuff ...
#else
    ... do it the old way ...
#endif
.fi
.PP
The following is a list of the man pages, divided roughly into
function groups.
.SS "Kernel Functions"
These are general kernel functions.
.RS
.TP
MAJOR
.TP
MOD_INC_USE_COUNT
.TP
cli
.TP
init_bh
.TP
init_module
.TP
kmalloc
.TP
poll_wait
.TP
printk
.TP
probe_irq_on
.TP
register_chrdev
.TP
register_console
.TP
request_irq
.TP
save_flags
.TP
sleep_on
.TP
wake_up
.RE
.SS "/proc functions"
These functions relate to manipulation of the
.B /proc
filesystem.
.RS
.TP
proc_dir_entry
.TP
proc_net_register
.TP
proc_scsi_register
.RE
.SS "BIOS32 functions"
These are specific to PCI (BIOS32) support.
.RS
.TP
pcibios_find_class
.TP
pcibios_present
.TP
pcibios_read_config_byte
.TP
pcibios_read_config_dword
.TP
pcibios_read_config_word
.TP
pcibios_strerror
.TP
pcibios_write_config_byte
.TP
pcibios_write_config_dword
.TP
pcibios_write_config_word
.RE
.SS "VM functions"
These are functions that support manipulating the virtual memory
subsystem.
.RS
.TP
MAP_NR
.TP
mem_map_reserve
.RE
.SS "Network Functions"
.RS
.TP
skb_dequeue
.TP
skb_insert
.TP
skb_peek
.TP
skb_queue_empty
.TP
skb_queue_head
.TP
skb_queue_head_init
.TP
skb_queue_len
.TP
skb_queue_tail
.TP
skb_unlink
.RE
.SH AVAILABILITY
Each man page attempts to list the kernel versions where the function
is available. If the form of the function changes, this section tells
when the described form applies.
.SH "SEE ALSO"
This section lists other man pages that may be of interest. Also,
interesting source files in the linux kernel may be listed here.
.SH AUTHORS
Each man page has a section like this one that lists the author(s) who
contributed significantly to that page. Other unnamed individuals may
also have contributed corrections, editorial, etc.
.PP
Major contributors are (in alphabetical order)
Cyrus Durgin <cider@speakeasy.org>,
Niel Moore <amethyst@maxwell.ml.org>,
Keith Owens <kaos@ocs.com.au>,
Kirk Petersen <kirk@speakeasy.org>,
and Stephen Williams <steve@icarus.com>.
.PP
Editorial, and this intro page, were done by Stephen Williams
<steve@icarus.com>.
.SH BUGS
The living linux kernel is a moving target, and the kernel functions
are unique to linux. Therefore, although the editor and contributers
make a good effort to be as accurate as possible, errors may
exist. The source codes of the linux kernel are the ultimate authority
on the behavior of any function and should be considered the final
word.
